#pragma once
#include <stdint.h>
#include <memory>
#include <string>

namespace fastrpc::rpc {

struct FastPBProtocol {
public:
    FastPBProtocol() {}
    ~FastPBProtocol() {}
    using s_ptr = std::shared_ptr<FastPBProtocol>;

public:
    inline static char PB_START = 0x02;  // 开始符 0x02
    inline static char PB_END = 0x03;    // 结束符 0x03

public:
    int32_t     m_pk_len{0};           // 整包长度，包含开始符和结束符
    int32_t     m_err_code{0};         // 错误码，正常为0
    int32_t     m_msg_id_len{0};       // MsgID的长度
    std::string m_msg_id;              // MsgID
    int32_t     m_err_info_len{0};     // 错误信息长度
    std::string m_err_info;            // 错误信息
    int32_t     m_method_name_len{0};  // 方法名长度
    std::string m_method_name;         // 方法名
    std::string m_pb_data;             // Protobuf序列化数据
    bool        parse_success{false};  // 是否解析成功
};

};  // namespace fastrpc::rpc
